﻿namespace DotRas
{
    using System;

    [Serializable]
    public sealed class RasLcpInfo
    {
        private RasLcpAuthenticationDataType _authenticationData;
        private RasLcpAuthenticationType _authenticationProtocol;
        private bool _bundled;
        private int _eapTypeId;
        private int _errorCode;
        private bool _multilink;
        private RasLcpOptions _options;
        private string _replyMessage;
        private RasLcpAuthenticationDataType _serverAuthenticationData;
        private RasLcpAuthenticationType _serverAuthenticationProtocol;
        private int _serverEapTypeId;
        private RasLcpOptions _serverOptions;
        private int _serverTerminateReason;
        private int _terminateReason;

        internal RasLcpInfo(bool bundled, int errorCode, RasLcpAuthenticationType authenticationProtocol, RasLcpAuthenticationDataType authenticationData, int eapTypeId, RasLcpAuthenticationType serverAuthenticatonProtocol, RasLcpAuthenticationDataType serverAuthenticationData, int serverEapTypeId, bool multilink, int terminateReason, int serverTerminateReason, string replyMessage, RasLcpOptions options, RasLcpOptions serverOptions)
        {
            this._bundled = bundled;
            this._errorCode = errorCode;
            this._authenticationProtocol = authenticationProtocol;
            this._authenticationData = authenticationData;
            this._eapTypeId = eapTypeId;
            this._serverAuthenticationProtocol = serverAuthenticatonProtocol;
            this._serverAuthenticationData = serverAuthenticationData;
            this._serverEapTypeId = serverEapTypeId;
            this._multilink = multilink;
            this._terminateReason = terminateReason;
            this._serverTerminateReason = serverTerminateReason;
            this._replyMessage = replyMessage;
            this._options = options;
            this._serverOptions = serverOptions;
        }

        public RasLcpAuthenticationDataType AuthenticationData
        {
            get
            {
                return this._authenticationData;
            }
        }

        public RasLcpAuthenticationType AuthenticationProtocol
        {
            get
            {
                return this._authenticationProtocol;
            }
        }

        public bool Bundled
        {
            get
            {
                return this._bundled;
            }
        }

        public int EapTypeId
        {
            get
            {
                return this._eapTypeId;
            }
        }

        public int ErrorCode
        {
            get
            {
                return this._errorCode;
            }
        }

        public bool Multilink
        {
            get
            {
                return this._multilink;
            }
        }

        public RasLcpOptions Options
        {
            get
            {
                return this._options;
            }
        }

        public string ReplyMessage
        {
            get
            {
                return this._replyMessage;
            }
        }

        public RasLcpAuthenticationDataType ServerAuthenticationData
        {
            get
            {
                return this._serverAuthenticationData;
            }
        }

        public RasLcpAuthenticationType ServerAuthenticationProtocol
        {
            get
            {
                return this._serverAuthenticationProtocol;
            }
        }

        public int ServerEapTypeId
        {
            get
            {
                return this._serverEapTypeId;
            }
        }

        public RasLcpOptions ServerOptions
        {
            get
            {
                return this._serverOptions;
            }
        }

        public int ServerTerminateReason
        {
            get
            {
                return this._serverTerminateReason;
            }
        }

        public int TerminateReason
        {
            get
            {
                return this._terminateReason;
            }
        }
    }
}

